/**************************************************************************************
*
*	Copyright (C) 2009 - 2012 Brent Andrew O. Chua - See LICENSE.txt for more info.
*		
*	Filename	-	GlobalGraphicsStrings.h
*
*	Description -	String constants used by the ParameterSystem specifically for graphics.
*
*	Comments	-
*
*	Modification History:
*			Name			   Date					Description
*			MrCodeSushi	-	08/01/2012	-	Creation of this file
**************************************************************************************/
#ifndef _PSX_GRAPHICS_PARAMETER_STRINGS_H_
#define _PSX_GRAPHICS_PARAMETER_STRINGS_H_

#include "PulseSTD.h"

namespace Pulse
{
	// Global resources
	#define GFX_SWAPCHAIN						PSX_String("04E7E54A-C2B8-4B87-B608-7A2F12A85CC5")
	#define GFX_SWAPCHAIN_BACK_BUFFER			PSX_String("09693862-F29D-4F1E-95FF-296A7DFF6CD3")
	#define GFX_SWAPCHAIN_DEPTHSTENCIL_BUFFER	PSX_String("E93C310A-D534-4596-BE29-31A91E190425")

	// WindowView parameters
	#define GFX_PARAM_TEXTURE_WINDOW_VIEW		PSX_String("gfx_gWindowViewTex")
	#define GFX_PARAM_WINDOW_VIEW_WIDTH			PSX_String("gfx_gDisplayWidth")
	#define GFX_PARAM_WINDOW_VIEW_HEIGHT		PSX_String("gfx_gDisplayHeight")

	// Camera Parameters
	#define GFX_PARAM_PROJECTION		PSX_String("gfx_gProj")
	#define GFX_PARAM_CAM_VIEW			PSX_String("gfx_gView")
	#define GFX_PARAM_CAM_VIEW_PROJ		PSX_String("gfx_gViewProj")
	#define GFX_PARAM_CAM_INV_VIEW_PROJ	PSX_String("gfx_gInvViewProj")
	#define GFX_PARAM_CAM_POSWS		PSX_String("gfx_gCamPosWS")
	#define GFX_PARAM_CAM_PROJ_A		PSX_String("gfx_gCamProjA")
	#define GFX_PARAM_CAM_PROJ_B		PSX_String("gfx_gCamProjB")
	#define GFX_PARAM_CAM_CLIP_NEAR		PSX_String("gfx_gCamClipNear")
	#define GFX_PARAM_CAM_CLIP_FAR		PSX_String("gfx_gCamClipFar")

	// Object Parameters
	#define GFX_PARAM_TRANSFORM_LOCAL	PSX_String("gfx_gLocal")
	#define GFX_PARAM_TRANSFORM_WORLD	PSX_String("gfx_gWorld")
	#define GFX_PARAM_WORLD_VIEW		PSX_String("gfx_gWorldView" )
	#define GFX_PARAM_WORLD_VIEW_PROJ	PSX_String("gfx_gWorldViewProj")

	// Texture Parameters
	#define GFX_PARAM_TEXTURE_DIFFUSE				PSX_String("gfx_gDiffuseTex")
	#define GFX_PARAM_TEXTURE_PLANAR_REFLECTION		PSX_String("gfx_gTexPlanarReflection")

	// Light pre-pass resources
	#define GFX_LP_DEPTH_BUFFER					PSX_String("gfx_gLPDepthBuffer")
	#define GFX_LP_GBUFFER						PSX_String("gfx_gLPGBuffer")
	#define GFX_LP_LIGHT_BUFFER					PSX_String("gfx_gLPLightBuffer")
	#define GFX_LP_COMPOSITE_BUFFER				PSX_String("gfx_gLPCompositeBuffer")
	#define GFX_LP_SPHERE_LIGHT_MATERIAL_FRONT	PSX_String("gfx_gLPSphereLightMatFront")
	#define GFX_LP_SPHERE_LIGHT_MATERIAL_BACK	PSX_String("gfx_gLPSphereLightMatBack")
	#define GFX_LP_SPHERE_LIGHT_MATERIAL_QUAD	PSX_String("gfx_gLPSphereLightMatQuad")
	#define GFX_LP_SPHERE_LIGHT_MATERIAL		PSX_String("gfx_gLPSphereLightMaterial")
	#define GFX_LP_SPHERE_LIGHT_GEOMETRY		PSX_String("gfx_gLPSphereLightGeometry")
	#define GFX_LP_SPHERE_LIGHT_MODEL			PSX_String("gfx_gLPSphereLightModel")


	// Forward+ parameters
	#define GFX_FP_EFFECT					PSX_String("PointLighting.efx")
	#define GFX_FP_PARAM_NUM_TILE_X			PSX_String("gfx_gNumTileX")
	#define GFX_FP_PARAM_NUM_TILE_Y			PSX_String("gfx_gNumTileY")
	#define GFX_FP_PARAM_NUM_LIGHTS			PSX_String("gfx_gNumLights")
	#define GFX_FP_PARAM_LIGHTS				PSX_String("gfx_gLights")
	#define GFX_FP_PARAM_LIGHT_INDICES_OUT	PSX_String("gfx_gLightIndicesOutput")
	#define GFX_FP_PARAM_LIGHT_INDICES		PSX_String("gfx_gLightIndices")

	// Light Parameters
	#define GFX_PARAM_LIGHT_COLOR		PSX_String("gfx_gLightColor")
	#define GFX_PARAM_LIGHT_RANGE		PSX_String("gfx_gLightRange")
	#define GFX_PARAM_LIGHT_SPOT_INNER	PSX_String("gfx_gLightSpotInnerAngle")
	#define GFX_PARAM_LIGHT_SPOT_OUTER	PSX_String("gfx_gLightSpotOuterAngle")

}

#endif /* _PSX_GRAPHICS_PARAMETER_STRINGS_H_ */
